public class Liste { private String data = null; private Liste next = null; public void push(String element){ append(element); } public String pop() { String blabla = ""; blabla = peek(); remove( length() ); return blabla; } public String peek() { return get( length() ) ; } public void queue(String daten){ append(daten); } public String process(){ String blubb = ""; blubb = get(1); remove(1); return blubb; } public void replace(int position, String monster){ insert(monster, position); remove(position + 1); } public void set(int position, String monster){ replace(position, monster); } public String toString() { Liste weiter; String sage = ""; for (weiter = this; weiter.next != null; weiter = weiter.next) { sage += weiter.next.data; } return sage; } public void append(String monster){ Liste weiter = this; for ( weiter = this; weiter.next != null; weiter = weiter.next) { } weiter.next = new Liste(); weiter.next.data = monster; } public void insert(String monster) { Liste neu = new Liste(); neu.data = monster; Liste weiter = this; while ( weiter.next != null && weiter.next.data.compareTo(neu.data) <= 0 ) { weiter = weiter.next; } neu.next = weiter.next; weiter.next = neu; } public void insert(String monster, int position) { if (position > length()) { return; } if (position < 1 ) { return; } Liste neu = new Liste(); neu.data = monster; Liste weiter = this; for ( int i = 0; i < ( position - 1); i++ ){ weiter = weiter.next; } neu.next = weiter.next; weiter.next = neu; } public int length(){ int count = 0; Liste weiter = this; for ( weiter = this; weiter.next != null; weiter = weiter.next ) { count++; } return count; } public void remove(String monster){ Liste weiter; for ( weiter = this; ! weiter.next.data.equals(monster); weiter = weiter.next ) { /* (keine Arbeitsanweisung) */ } weiter.next = weiter.next.next; } public void remove(int position){ Liste weiter = this; if (position < 1 || position > length()) { return; } for (int i = 0; i < (position - 1); i++) { weiter = weiter.next; } weiter.next = weiter.next.next; } public String get(int n) { Liste weiter = this; for (int i = 0; i < n && n <= length(); i++){ weiter = weiter.next; } return weiter.data; } public int positionOf(String monster){ /* Variablen */ Liste weiter = this; int position = 0; /* Schleife */ while ( weiter != null ) { if ( monster.equals(weiter.data) ) { return position; } weiter=weiter.next; position++; } return 0; } public static boolean test() { Liste hercules = new Liste(); Liste odysseus = new Liste(); hercules.insert("Hydra"); // biester[0] = "Hydra" hercules.append("Löwe"); // biester[1] = "Löwe" hercules.append("Minotaurus"); // biester[2] = "Minotaurus" hercules.append("Nessos"); // biester[3] = "Nessos" odysseus.append("Zyklop"); odysseus.append("Circe"); assert(hercules.next.data.equals("Hydra")); assert(hercules.next.next.data.equals("Löwe")); int n; n = hercules.length(); assert( n == 4 ); assert( odysseus.length() == 2 ); String biester = hercules.toString(); assert(biester.equals("HydraLöweMinotaurusNessos")); // assert( biester.equals("Hydra, Löwe, Minotaurus, Nessos") ); String drittes = hercules.get(3); assert( drittes.equals("Minotaurus")); assert( odysseus.get(2).equals("Circe")); hercules.remove("Minotaurus"); assert( hercules.get(3).equals("Nessos")); assert( hercules.length() == 3 ); assert(hercules.get(0) == null); assert(hercules.get(-23) == null); assert(hercules.get(15) == null); assert( hercules.toString().equals("HydraLöweNessos") ); hercules.insert("Minotaurus"); assert( hercules.toString().equals("HydraLöweMinotaurusNessos") ); hercules.insert("Medusa"); assert( hercules.length() == 5 ); assert( hercules.toString().equals("HydraLöweMedusaMinotaurusNessos") ); hercules.insert("Schnabbeldiwauwau", 2); // System.err.println(hercules.toString()); assert(hercules.toString().equals("HydraSchnabbeldiwauwauLöweMedusaMinotaurusNessos")); assert(hercules.length() == 6); hercules.insert("Huhn", -3); hercules.insert("Huhn", 0); hercules.insert("Huhn", 1); assert(hercules.toString().equals("HuhnHydraSchnabbeldiwauwauLöweMedusaMinotaurusNessos")); assert(hercules.length() == 7); hercules.insert("Hahn", 9); assert(hercules.toString().equals("HuhnHydraSchnabbeldiwauwauLöweMedusaMinotaurusNessos")); assert(hercules.length() == 7); assert(hercules.positionOf("Huhn") == 1); assert(hercules.positionOf("Nessos") == 7); assert(hercules.positionOf("gibtsnich") == 0); hercules.remove(1); assert(hercules.toString().equals("HydraSchnabbeldiwauwauLöweMedusaMinotaurusNessos")); hercules.remove(2); assert(hercules.toString().equals("HydraLöweMedusaMinotaurusNessos")); hercules.remove(8); assert(hercules.toString().equals("HydraLöweMedusaMinotaurusNessos")); Liste stack = new Liste(); assert(stack.peek() == null); stack.push("Kaffeetasse"); assert(stack.peek().equals("Kaffeetasse")); stack.push("Skateboard"); assert(stack.peek().equals("Skateboard")); stack.push("Kugelschreiber"); stack.push("Kaffeetasse"); assert( stack.pop().equals("Kaffeetasse") ); assert( stack.pop().equals("Kugelschreiber") ); assert( stack.pop().equals("Skateboard") ); assert( stack.pop().equals("Kaffeetasse") ); assert( stack.pop() == null ); hercules.replace(2, "Sphinx"); assert(hercules.toString().equals("HydraSphinxMedusaMinotaurusNessos")); hercules.replace(2, "Manticore"); assert(hercules.toString().equals("HydraManticoreMedusaMinotaurusNessos")); System.out.println("Assertions successful!"); return true; } // Funktionsende kehrt immer zurück zur Stelle des Aufrufs public static void main(String[] args){ assert( test() ); } }